关于Spring中的[控制反转]和[依赖注入]的深入理解

第一段说明

对于一个Bean 来说,如果你依赖别的Bean , 只需要声明即可, spring 容器负责把依赖的bean 给“注入进去“, 起初大家称之为控制反转(IoC)

  • 后来 Martin flower 给这种方式起来个更好的名字,叫“依赖注入”。
  • 如果一个Bean 需要一些像事务,日志,安全这样的通用的服务, 也是只需要声明即可, spring 容器在运行时能够动态的“织入”这些服务, 这叫AOP。

第二段说明

控制反转(IoC=Inversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

  • 所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。
  • 正在业界为IoC争吵不休时,大师级人物Martin Fowler也站出来发话,以一篇经典文章《Inversion of Control Containers and the Dependency Injection pattern》为IoC正名,至此,IoC又获得了一个新的名字:“依赖注入(Dependency Injection)”。

从上面的两段说明文字可以看出:
其实所谓的Ioc和DI,是说的同一件事,强调的内容不同而已。

  • IoC控制反转,强调容器的作用,用于组织或控制容器内bean的运行。
  • DI依赖注入,强调Bean需要外部注入才能正常运转。相对地说做容器框架的(比如Spring)当然强调控制了,怎么更好的控制别的Bean的运行,相反做模块的,当然强调注入了,我到底需要依赖注入什么。

写给自己:自己刚刚接触Spring,对于上面的两个概念还不是很清晰,以作总结。

-------------本文结束感谢您的阅读-------------

本文标题:关于Spring中的[控制反转]和[依赖注入]的深入理解

文章作者:老米的世界

发布时间:2017年05月26日 - 00:00

最后更新:2019年09月05日 - 22:06

原始链接:http://mpfly.github.io/2017/05/26/关于Spring中的[控制反转]和[依赖注入]的深入理解/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

老米的世界 wechat
欢迎关注我的微信公众号!
坚持原创技术分享,您的支持将鼓励我继续创作!